The present disclosure relates generally to performing a relational join operation between a database table and non-database data, and more specifically to a performing a join operation between a database table and second in-memory data of an application.
In a relational database (RDMS), a JOIN operation combines columns of multiple tables into a wider table (result set) by defining relations between columns of each table. The typical join relation is between the primary key of one table and a key of another table. A simple example is a table containing people primary-keyed by social security number, and a secondary table containing telephone numbers; each associated to a person identified by the person's social security number being a key in the second table or, a so-called foreign key. The SQL expression for such a relation can look something like:
SELECT Name, Telephone FROM Persons LEFT OUTER JOIN Telephone ON People.SSN=Telephone.SSN WHERE Person.Name=“Eric”
Both, the Person table and the Telephone table are stored within the RDMS. In the case where a relationship exists between tables not within the RDMS, some systems provide a method to also access tables of another RDMS transparently. There also exist methods by which an application can perform a relational JOIN to data external to the RDMS by firstly temporally creating a table within the RDMS, secondly filling the table with application data, and finally issuing a relational JOIN query. This method incurs a significant overhead and is usually only viable for complex joins and middle sized application tables. A second, alternative method to achieve program a generic relational query between RDMS and external data requires RDMS support for something called generic table functions. However, known technologies would require dedicated support as part of the database in order to join data from a database table and data residing in the memory space of an application, known as “in-memory”. Because in-memory data management by programs and related systems are a foundation of big transient data based applications, there is a need for efficient join methods for performing relational operations with data from an application and data residing within any native RDMS.